#include<iostream>
using namespace std;
const int N=1e5+10;
int arr[N];
int q[N];
int n,len=1;
int find(int x)
{
	int l=-1,r=n;
	while(l+1<r){
		int mid=l+r>>1;
		if(q[mid]<x)l=mid;
		else r=mid;
	}
	return r;
}
int main()
{
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>arr[i];
	}
	q[0]=arr[0];
	for(int i=1;i<n;i++){
		if(arr[i]>q[len]){
			q[++len]=arr[i];
		}
		else{
			int idx=find(arr[i]);
			q[idx]=arr[i];
		}
	}
	cout<<len<<endl;
	return 0;
}
